// import router from "../router";

export function createRouteMap(routes, oldPathList, oldPathMap) {
  //数组的扁平化
  let pathList = oldPathList || [];
  // 如果有oldPathMap 我需要将routes格式化后 放到oldPathMap中
  // 如果没有传递 需要生成一个映射表
  let pathMap = oldPathMap || {};
  routes.forEach(route => {
    addRouteRecord(route, pathList, pathMap);
  })
  return {
    pathList,
    pathMap
  }
}
function addRouteRecord(route, pathList, pathMap, parent) {
  //把父级路径和子级路径拼接
  let path = parent ? `${parent.path}/${route.path}` : route.path;
  // 将记录 和 路径关联起来
  let record = { // 最终路径 会匹配到这个记录,里面可以自定义属性等
    path,
    component: route.component, // 组件
    props: route.props || {},
    parent //当前路由的父路径
  }
  if (!pathMap[path]) {
    pathList.push(path);
    pathMap[path] = record;
  }
  if (route.children) {
    route.children.forEach(route => {
      addRouteRecord(route, pathList, pathMap, record); // 在循环儿子的时候将父路径也同时传入，目的是为了在子路由添加的时候可以拿到父路径
    })
  }
}